/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package MODELO;

import java.sql.*;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author CiberPulpo
 */
public class DAOEntidadProvincia extends ManejadorBaseDatos implements IDAOPersistencia{
    
    
    public DAOEntidadProvincia() throws Exception {
        super();
    }
    
    public DAOEntidadProvincia(String driver, String servidor, String url, String usuarioBD, String passwordUsuarioBD, String nombreBD) throws Exception {
        super(driver, servidor, url, usuarioBD, passwordUsuarioBD, nombreBD);
    }
    
    public int contar(int cod_depart) {
        int rpta = 0;
        Connection conn = getConexion();
        try {
            ResultSet prueba;
            // se crea instancia a procedimiento, los parametros de entrada y salida se simbolizan con el signo ?
            CallableStatement proc = conn.prepareCall(" CALL provincia_contar(?) ");
            proc.setInt("cod_depart", cod_depart);
            prueba = proc.executeQuery();
            while (prueba.next()) {
                rpta = Integer.parseInt(prueba.getString("COUNT(*)"));
            }

        } catch (SQLException | NumberFormatException e) {
            System.out.println(e);
        }
        desconectar();
        return rpta;
    }
    
    public DefaultComboBoxModel getListaProvincia(int codigo_Depart) {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        try {
            CallableStatement proc2 = getConexion().prepareCall(" CALL provincia_listar_user(?) ");
            proc2.setInt("codigo_departamento", codigo_Depart);
            ResultSet res = proc2.executeQuery();
            while (res.next()) {
                model.addElement(res.getString("nombre_lugar"));
            }
            res.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        desconectar();
        return model;
    }
        public DefaultComboBoxModel getListarProvincia(String subCod_Distrito) {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        try {
            CallableStatement proc2 = getConexion().prepareCall(" CALL provincia_Listr_User(?) ");
            proc2.setString("subCod_distrito", subCod_Distrito);
            ResultSet res = proc2.executeQuery();
            while (res.next()) {
                model.addElement(res.getString("nombre_lugar"));
            }
            res.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        desconectar();
        return model;
    }
    public int getCodigo_provincia(String nombre_Provinc, int codigo_depart) {
        int codigo_provincia = 0;
        Connection conn = getConexion();
        try {
            CallableStatement proc = conn.prepareCall(" CALL provincia_obtener_cod(?,?) ");
            proc.setString("pnombre_lugar", nombre_Provinc);
            proc.setInt("codigo_depart", codigo_depart);
            ResultSet res = proc.executeQuery();
            while (res.next()) {
                codigo_provincia = Integer.parseInt(res.getString("codigo"));
                //model.addElement( res.getString( "nombre" ));
            }
            res.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        desconectar();
        return codigo_provincia;
    }
    
    public DefaultTableModel getTablaProvincia(int cod_depart) {
        DefaultTableModel tablemodel = new DefaultTableModel();
        String[] columNames = {"NOMBRE", "ESTADO"};
        Object[][] data = new String[contar(cod_depart)][2];
        try {
            conectar();
            //realizamos la consulta sql y llenamos los datos en la matriz "Object[][] data"
            CallableStatement pstm = this.getConexion().prepareCall("CALL provincia_listar_admin(?)");
            pstm.setInt("cod_depart", cod_depart);
            ResultSet res = pstm.executeQuery();
            int i = 0;
            while (res.next()) {
                data[i][0] = res.getString("nombre_lugar");
                data[i][1] = res.getString("estado");
                i++;
            }
            res.close();
            //se añade la matriz de datos en el DefaultTableModel
            tablemodel.setDataVector(data, columNames);
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        desconectar();
        return tablemodel;
    }
    
    @Override
    public int insertar(IEntidad objeto) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public int borrar(String condicion) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public int modificar(IEntidad objeto) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
    
    
}
